﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace BoletoElectronicoDesktop.AbmRol
{
    public partial class FormModificarRol : Form
    {

        //defino variables  con la información del formulario anterior
        public string idRol;
        public string nombreRol;
        public string habilitado;

        public FormModificarRol()
        {
            InitializeComponent();
        }

        private void FormModificarRol_Load(object sender, EventArgs e)
        {
            //abro el formulario maximizado
            this.WindowState = FormWindowState.Maximized;

            //cargo los datos en los objetos
            txtNombre.Text = nombreRol;
            
            //cargo el checkbox
            if (string.Compare(habilitado, "True") == 0)
            {
                chbHabilitado.Checked = true;
                chbHabilitado.Enabled = false;

            }
            else
                chbHabilitado.Enabled = true;
            //cargo las funcionalidades en el listbox
            DataTable Dt = RolDAO.ObtenerFuncionalidades();
            chlbFuncionalidades.DataSource = Dt;
            chlbFuncionalidades.ValueMember = "FuncionalidadId";
            chlbFuncionalidades.DisplayMember = "FuncionalidadNombre";

            //marco los items del listbox
            int Existe;
            int TotFunc = Convert.ToInt32(chlbFuncionalidades.Items.Count.ToString());

            for (int i = 0; i < TotFunc; i++)
            {

                Existe = RolDAO.ObtenerFuncionalidadDelRol(idRol, Dt.Rows[i].ItemArray[0].ToString());
                if (Existe != 0)
                {
                    chlbFuncionalidades.SetItemChecked(i, true);
                }
            }
           


             
           
            
        }

        private void label2_Click(object sender, EventArgs e)
        {

        }

        private void btnAgregar_Click(object sender, EventArgs e)
        {


        }

        private void groupBox1_Enter(object sender, EventArgs e)
        {

        }

        private void chlbFuncionalidades_SelectedIndexChanged(object sender, EventArgs e)
        {
        
        }

        private void btnModificar_Click(object sender, EventArgs e)
        {
            string hab;
            //determino si el usuario modificó el atributo de habilitado
            if (chbHabilitado.Checked == true)
                hab = "True";
            else
                hab = "False";
            //si el usuario modificó la habilitación o el nombre del rol, actualizo la tabla Rol
            if ((string.Compare(habilitado, hab) != 0) || (string.Compare(txtNombre.Text, nombreRol) != 0))
            {                
                RolDAO.ActualizarRol(idRol,txtNombre.Text, hab);
            }
            //elimino todas sus funcionalidades
            RolDAO.EliminarFuncionalidadesDeRol(idRol);

            //inserto 1*1 las funcionalidades de ese rol en la tabla FuncionalidadXRol

            foreach (DataRowView FilaSeleccionados in chlbFuncionalidades.CheckedItems)
            {
                RolDAO.InsertarFuncionalidadPorRol(idRol.ToString(), FilaSeleccionados.Row[0].ToString());
            }
            MessageBox.Show("Rol modificado con éxito");
            
            Close();
            

        }
    }
}
